<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // Promise.prototype.then(callbackA[,callbackB])
        function returnPromise(){
            var pro=new Promise(function(resolve,reject){
                resolve();
                // reject();
            });
            return pro;
        }
        var p=returnPromise();
        var p2=p.then(function(){
            //定义常规js代码
            // 1.如果函数中没有定义return，该then函数会返回一个用于描述当前js中运行状态的promise的实例对象
            var num=1;
            console.log(num);
        },function(){
            console.log("调用了第二个回调函数");
        });
        // console.log(p2);

        // 返回的promise 对象用于描述上一个then 的执行状态监控
        p2.then(function(){
            console.log("上一个函数执行成功");
        },function(error){
            console.log("上一个函数执行失败："+error);
        });

        // var p3=returnPromise();
        // var p4=p3.then(function(){
        //     // 2.如果then函数中定义了return关键字，但返回的结果不是自定义的promise对象，函数中return会将返回的结果作为新的promise对象resolve状态下的参数进行传递
       
        //     return "嘿嘿";

        // },function(){
        //     console.log("执行了reject，嘻嘻");
        //     return "啊啊啊";
        // });
        // //新的then方法依旧对上一个then 的执行状态的监控
        // p4.then(function(data){
        //     console.log(data);
        // },function(error){
        //     console.log(error);
        // });
      
        // var p5=returnPromise();
        // var p6=p5.then(function(){
        //     //3.如果then方法中定义了return关键字，但是返回的是自己创建的promise对象
        //     // 自定义的promise对象将自行完成状态变化，影响后续then函数的方法执行
        //     var num=10;
        //     console.log(num);
        //     var pnew=new Promise(function(resolve,reject){
        //         // resolve("嘻嘻");
        //         // reject("哈哈哈哈哈哈哈哈哈");
        //         setTimeout(reject,2000,"我是reject的参数");
        //     });
        //     return pnew;
        // },function(){
        //     console.log("reject");
        // });
        // p6.then(function(data){
        //     console.log("上一个函数执行成功："+data);
        // },function(error){
        //     console.log(error);
        // });
        // console.log(p6);

        /* 
        setTimeout(show,500,"我是参数呀");
        function show(a){
            console.log("我就看看："+a);
        } */
    </script>
</head>
<body>
    
</body>
</html>